<?php


/**
 * 管理员管理
 * Enter description here ...
 * @author Administrator
 *
 */
class AdminAction extends CommonAction{
	
	
	/**
	 * 管理员列表
	 * Enter description here ...
	 * 启用状态：1 禁用状态：0
	 */
	public function index() {
		$admin = D('Admin');  //实例化Model
		$prefix = C('DB_PREFIX');    //配置Conf/config.php 中数据表前缀
		
		
		import("@.ORG.Page"); //导入分页类
		
		$count = $admin->count();    //计算总数
		$p = new Page ($count,10);   //分页构造方法
		
		$admindata = $admin->Table("{$prefix}admin as U")->
					  join("{$prefix}role_user as RU ON U.aid = RU.user_id")->
					  join("{$prefix}role as R ON RU.role_id = R.id")->
					  field('U.*,R.name as role')->
					  
					  limit($p->firstRow.','.$p->listRows)->   //查询指定范围记录
					  
					  order('aid desc')->findAll();
					  
		$page = $p->show();   
		
		
		$this->assign("page",$page);
		$this->assign("admindata",$admindata);
		
		$this->display();
	}
	
	
	
	
	/**
	 * 修改管理员信息
	 * Enter description here ...
	 * 启用状态：1 禁用状态：0
	 */
	public function edit() {
		//D 快速实例化Model类库  、 M 快速高性能实例化模型

		$admin = D('Admin');   //管理员Model
		$role = D('Role');     //角色Model
		
		$role_user = M('Role_user');  //角色用户Model
		
		$roledata = $role->select();   //所有角色
		
		$id     = GetNum($_GET['aid']);   //管理员主键
		$vo	=	$admin->find($id);
		
		$role_user_where['user_id'] = $id;
		$role_userdate = $role_user->where($role_user_where)->find();  //检索管理员所属角色组
		
		$role_id = $role_userdate['role_id'];  //角色组ID
		
		$this->assign('data',$vo);
		$this->assign("roledata",$roledata);
		$this->assign("role_id",$role_id);
		
		$this->display();
	}
    
	
	
	/**
	 * 确认改管理员信息
	 * Enter description here ...
	 * 启用状态：1 禁用状态：0
	 */
	public function update(){
		$admin = D('Admin');      //管理员Model
		$role_user = M('Role_user'); //角色用户Model
		
		$dataarr = Init_GP(array('name','password','state','password2'));   //获取页面数据
		$pid = GetNum($_POST['pid']);   //角色ID
		
		
		if($dataarr['password'] != $dataarr['password2']){
			$this->error('两次密码输入不一样');
		}
		
		if(!empty($dataarr['password'])){    //密码
			$data['password'] = $dataarr['password'];
		}else{
			unset($data['password']);
		}

		$data['state'] = $dataarr['state'];  //状态
		
		$where['name'] = $dataarr['name'];     //根据账号获取---账号数据库中唯一

		$data = $admin->create($data,2);
		
		if(empty($data) || $data === false) {
			$this->error($admin->getError());
		}
		
		if(empty($data['password'])){
			unset($data['password']);
		}
		
		$id = $admin->where($where)->save($data);   //修改确认管理员信息
		
		
		//成功提示
		$admin_tmp = $admin->where($where)->find();
		$id = $admin_tmp['aid'];    //管理员主键

		$role_user_where['user_id'] = $id;
		$role_userdata['role_id'] = $pid;    //获取角色人员表中当前管理员所拥有角色
		$info = $role_user->where($role_user_where)->save($role_userdata);

		if($id || $info) { //保存成功
			$this->assign('jumpUrl','__URL__/index');    //跳转到管理员列表页面
			$this->success("编辑成功");
		}else {
			//失败提示
			$error = $admin->getError();
			if (empty($error)) {
				$this->error("编辑失败");
			}else {
				$this->error($error);
			}
		}
		
	}
	
	
	
	/**
	 * 添加管理员
	 * Enter description here ...
	 */
	public function add() {
		$role = D('Role');
		$roledata = $role->select();   //角色组
		
		$this->assign("roledata",$roledata);
		
		$this->display();
	}
	
	
	
	/**
	 * 添加管理员确认
	 * Enter description here ...
	 */
	public function insert(){
		$admin = D('Admin');   //管理员
		$role_user = M('Role_user');  //管理员角色
		
		$data = Init_GP(array('name','password','state','password2'));  //获取页面信息
		$pid = GetNum($_POST['pid']);   //角色ID
		
		if($data['password'] != $data['password2']){
			$this->error('两次密码输入不一样');
		}

		$data = $admin->create($data,1);   //填充
		if(empty($data) || $data === false) {
			$this->error($admin->getError());
		}
		
		//保存当前数据对象
		$id = $admin->add($data);   //保存管理员
		
		
		if($id) { //保存成功
			//成功提示
			if (!empty($pid)){   //用户保存成功，在给用户角色授权
				$role_userdata = array(
					'role_id'=>$pid,
					'user_id'=>$id
				);
				$role_user->add($role_userdata);	  //保存用户角色表信息
			}	
			
			$this->assign('jumpUrl','__URL__/index');  //跳转到管理员列表首页
			
			$this->success("添加成功");
		}else {
			//失败提示
			$this->error($admin->getError());
		}
	}
	
	
	
	
	
	
	
	/**
	 * 删除单个管理员
	 * Enter description here ...
	 * 删除指定记录
	 */
    public function del() {
        $admin = D('Admin');
        $prefix = C('DB_PREFIX');  //数据表前缀
        
        if(!empty($admin)) {
            $id       = GetNum($_GET['aid']);  //管理员表主键ID
            if(isset($id)) {   
            	//级联删除角色用户信息
            	$sql = "DELETE U,RU FROM `{$prefix}admin` as U LEFT JOIN `{$prefix}role_user` as RU ON U.aid = RU.user_id WHERE U.aid = {$id}";
                if($admin->execute($sql)){
                    $this->success("删除成功");
                }else {
                    $this->error("删除失败");
                }
            }else {
                $this->error('非法操作');
            }
        }
    }
    
    
    /**
	 * 删除多个管理员
	 * Enter description here ...
	 */
	public function dels() {
        $admin = D('Admin');
        $prefix = C('DB_PREFIX');
        
        if(!empty($admin)) {
            $ids       = getdotstring($_POST['aids'],'int');   //获取多个管理员主键IDS
            //级联删除角色用户信息
            $sql = "DELETE U,RU FROM `{$prefix}admin` as U LEFT JOIN `{$prefix}role_user` as RU ON U.aid = RU.user_id WHERE U.aid in({$ids})";
            if ($admin->execute($sql)){
            	$this->success('已删除选定项');
            }else{
            	$this->error($admin->getError());
            }
        }
    }
    
    
	
	
}
?>